package br.trainee.web.controller;

import java.io.IOException;
import java.util.List;

import javax.inject.Inject;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

import br.trainee.web.bo.impl.ClinicaBO;
import br.trainee.web.vo.ClinicaVO;

@WebServlet("/autoComplete")
public class AutoCompleteController extends HttpServlet{
	
	@Inject
	private ClinicaBO bo;
	
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		/*
		// Pegando o id da clinica selecionada pelo usuário na consulta		
		String idClinica = request.getParameter("idClinica");
		
		// Cairá neste if na segunda chamada da Servlet pelo componente AutoComplete na tela de consulta, ou seja,
		// quando o usuário selecionar uma clinica
		if(idClinica != null){
									
			HttpSession sessao = request.getSession();
			
			ClinicaVO clinica = new ClinicaVO();
			
			clinica.setIdPessoa(Long.parseLong(idClinica));
			clinica.setNomePessoa(String.valueOf(request.getParameter("nomeClinica")));
			clinica.setCnpj(request.getParameter("cnpj"));
						
			// Envia a clinica selecionada para a sessão.
			// Isso é necessário pois a Servlet não tem acesso ao ClinicaBean (JSF)
			sessao.setAttribute("clinicaSelecionada", clinica);
						
		}
		else{
		*/
			// Cairá aqui na primeira chamada da Servlet pelo componente AutoComplete na tela de consulta, ou seja,
			// quando o usuário digitar o texto para a consulta
			
			String campoDigitado = request.getParameter("parametroRetorno");
			
			List<ClinicaVO> listaClinica = bo.consultarClinicaPorNomeECnpj(campoDigitado, null);
			
			String retornoJson = "[]";
			
			if(listaClinica != null){
				
				ClinicaVO clinica = null;
				
				JSONArray vetorJson = new JSONArray();
				
				 for (int i=0; i<listaClinica.size(); i++) {
					 
					 clinica = listaClinica.get(i);
					 JSONObject json = new JSONObject();
					 json.put("idClinica", clinica.getIdPessoa().toString());
					 json.put("nomeClinica", clinica.getNomePessoa());
					 json.put("cnpj", clinica.getCnpj());
					 				 
					 vetorJson.add(json);
					 
				 }
				 
				 retornoJson = vetorJson.toString();
				
			//}
						
			response.setContentType("application/json");
			response.getWriter().print(retornoJson);
			
		}
		
	}
	
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
	}
	
}
